user  {{ nginx_user }};

error_log  {{ nginx_error_log }};
pid        {{ nginx_pidfile }};

worker_processes  {{ nginx_worker_processes }};

events {
    worker_connections  {{ nginx_worker_connections }};
    multi_accept {{ nginx_multi_accept }};
}
{% if nginx_extra_conf_options %}
{{ nginx_extra_conf_options }}
{% endif %}
http {
    include       {{ nginx_mime_file_path }};
    default_type  application/octet-stream;

    server_names_hash_bucket_size {{ nginx_server_names_hash_bucket_size }};

    client_max_body_size {{ nginx_client_max_body_size }};

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  {{ nginx_access_log }};

    sendfile        {{ nginx_sendfile }};
    tcp_nopush      {{ nginx_tcp_nopush }};
    tcp_nodelay     {{ nginx_tcp_nodelay }};

    keepalive_timeout  {{ nginx_keepalive_timeout }};
    keepalive_requests {{ nginx_keepalive_requests }};
{% if nginx_gzip %}
    gzip on;
    gzip_min_length  1100;
    gzip_buffers     4 32k;
    gzip_http_version 1.0;
    gzip_comp_level 6;
    gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
    gzip_vary on;
{% endif %}
{% if nginx_proxy_cache_path %}
    proxy_cache_path {{ nginx_proxy_cache_path }};
{% endif %}
{% if nginx_extra_http_options %}
    {{ nginx_extra_http_options|indent(4, False) }}
{% endif %}
{% if nginx_stream %}
}
stream {
{% endif %}
{% for upstream in nginx_upstreams %}
    upstream {{ upstream.name }} {
{% if upstream.strategy is defined %}
        {{ upstream.strategy }};
{% endif %}
{% for server in upstream.servers %}
        server {{ server }};
{% endfor %}
{% if upstream.keepalive is defined %}
        keepalive {{ upstream.keepalive }};
{% endif %}
    }
{% endfor %}
{% include 'nginx_default_server_conf.j2' %}
{% include 'nginx_vhosts_conf.j2' %}
}
